package GUI;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 * 
 * @author MaximumDataOverdrive
 * 
 */
public class EigeneUebersichtPanel extends JPanel implements ActionListener {
	/**
	 * 
	 */
	private static final long serialVersionUID = -1637593427556400559L;
	private JButton btnEigenerPlan;
	private JLabel lblWochenstunden;
	private JLabel lblXyBelegt;
	private JButton btnAusloggen;

	/**
	 * Konstruktor des Eigene-Übersicht-Panels
	 */
	public EigeneUebersichtPanel() {
		// TODO Auto-generated constructor stub
		initialize();
	}

	/**
	 * Diese Methode initialisert das Panel für die eigene Übersicht.
	 */
	private void initialize() {
		final GridBagLayout gridBagLayout = new GridBagLayout();
		gridBagLayout.columnWidths = new int[] { 0, 0 };
		gridBagLayout.rowHeights = new int[] { 0, 0, 0, 0, 0, 0 };
		gridBagLayout.columnWeights = new double[] { 0.0, Double.MIN_VALUE };
		gridBagLayout.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.0,
				Double.MIN_VALUE };
		setLayout(gridBagLayout);
		final GridBagConstraints gbc_btnEigenerPlan = new GridBagConstraints();
		gbc_btnEigenerPlan.insets = new Insets(0, 0, 5, 0);
		gbc_btnEigenerPlan.gridx = 0;
		gbc_btnEigenerPlan.gridy = 1;
		add(getBtnEigenerPlan(), gbc_btnEigenerPlan);
		final GridBagConstraints gbc_lblWochenstunden = new GridBagConstraints();
		gbc_lblWochenstunden.insets = new Insets(0, 0, 5, 0);
		gbc_lblWochenstunden.gridx = 0;
		gbc_lblWochenstunden.gridy = 2;
		add(getLblWochenstunden(), gbc_lblWochenstunden);
		final GridBagConstraints gbc_lblXyBelegt = new GridBagConstraints();
		gbc_lblXyBelegt.insets = new Insets(0, 0, 5, 0);
		gbc_lblXyBelegt.gridx = 0;
		gbc_lblXyBelegt.gridy = 3;
		add(getLblXyBelegt(), gbc_lblXyBelegt);
		final GridBagConstraints gbc_btnAusloggen = new GridBagConstraints();
		gbc_btnAusloggen.fill = GridBagConstraints.HORIZONTAL;
		gbc_btnAusloggen.gridx = 0;
		gbc_btnAusloggen.gridy = 4;
		add(getBtnAusloggen(), gbc_btnAusloggen);
	}

	/**
	 * Diese Methode gibt den Button: btnEigenerPlan zurück. Existiert dieser
	 * nicht, wird er neu initialisert.
	 * 
	 * @return btnEigenerPlan Button der den Stundenplan des eingeloggten Users
	 *         anzeigen lässt.
	 */
	private JButton getBtnEigenerPlan() {
		if (btnEigenerPlan == null) {
			btnEigenerPlan = new JButton("Eigener Plan");
			btnEigenerPlan.addActionListener(this);
		}
		return btnEigenerPlan;
	}

	/**
	 * Diese Methode gibt das Label mit "Wochenstunden:" zurück. Gibt es dieses
	 * nicht, wird es neu initialisert.
	 * 
	 * @return lblWochenstunden Label indem "Wochenstunden:" steht.
	 */
	private JLabel getLblWochenstunden() {
		if (lblWochenstunden == null) {
			lblWochenstunden = new JLabel("Wochenstunden:");
		}
		return lblWochenstunden;
	}

	/**
	 * Diese Methode gibt das Label mit "x/y belegt" zurück. Gibt es dieses
	 * nicht, wird es neu initialisert.
	 * 
	 * @return lblXyBelegt Label indem "x/y belegt" steht.
	 */
	public JLabel getLblXyBelegt() {
		if (lblXyBelegt == null) {
			lblXyBelegt = new JLabel("x/y belegt");
		}
		return lblXyBelegt;
	}

	/**
	 * Diese Methode enthält alle Funktionen, die bei der Betätigung der
	 * jeweiligen Elemente ausgeführt werden. Dabei wird bei den if-Bedigungen
	 * geprüft, welches Element betätigt worden ist und die gewünschte Funktion
	 * wird ausgeführt.
	 */
	@Override
	public void actionPerformed(final ActionEvent arg0) {

		if (arg0.getSource() == getBtnEigenerPlan()) {
			StundenplanController.getInstance().setEigenPlan();
		} else {
			StundenplanController.getInstance().ausloggen();
		}
	}

	/**
	 * Diese Methode gibt den Button: btnAusloggen zurück. Existiert dieser
	 * nicht, wird er neu initialisert.
	 * 
	 * @return btnAusloggen Button der den Logout des jeweils eingeloggten Users
	 *         ausführt.
	 */
	private JButton getBtnAusloggen() {
		if (btnAusloggen == null) {
			btnAusloggen = new JButton("Ausloggen");
			btnAusloggen.addActionListener(this);
		}
		return btnAusloggen;
	}
}
